package ch.ifage.business.service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.enterprise.context.ApplicationScoped;
//import java.util.logging.Logger;
import ch.ifage.business.dom.Assureur;
import ch.ifage.business.dom.Client;
import ch.ifage.business.dom.Police;
import ch.ifage.business.dom.Sinistre;

/**
 * Simulation de la base de donn�e d'un courtier.
 * Impl�mentation du service.
 * @author Betty B�
 *
 */
@ApplicationScoped
public class ServiceCourtierImpl implements ServiceCourtier, Serializable {
	/** logger par d�faut. */
	private static final long serialVersionUID = 1L;
	/** Liste des clients enregistr�s. */
	private List <Client> tousLesClients;
	/** Liste des assureurs enregistr�s. */
	private List <Assureur> tousLesAssureurs;
	/** Liste des polics enregsitr�es. */
	private List <Police> toutesLesPolices;
	/** Liste des sinistres enregistr�s. */
	private List <Sinistre> tousLesSinistres;
	/** Le client connect� consultant sa page. */
	private Client clientUtilisateur;
	/** L'assureur connect� consultant sa page. */
	private Assureur assureurUtilisateur;
	/** *Constructeur g�n�rant par d�faut des listes.
	 * et des donn�es pr�enregistr�es */
	public ServiceCourtierImpl()  {
		this.tousLesClients = new ArrayList<Client>();
		this.tousLesAssureurs = new ArrayList<Assureur>();
		this.toutesLesPolices = new ArrayList<Police>();
		this.tousLesSinistres = new ArrayList<Sinistre>();
		this.preEnregistrements();
	}
	/** pr�enregistrements. */
	public  void preEnregistrements()  {
		Client c1 = new Client();
		Client c2 = new Client();
		Client c3 = new Client();
		Client c4 = new Client();
		this.tousLesClients.add(c1);
		this.tousLesClients.add(c2);
		this.tousLesClients.add(c3);
		this.tousLesClients.add(c4);
		Assureur a1 = new Assureur();
		Assureur a2 = new Assureur();
		this.tousLesAssureurs.add(a1);
		this.tousLesAssureurs.add(a2);
		Police p1 = new Police();
		Police p2 = new Police();
		Police p3 = new Police();
		this.toutesLesPolices.add(p1);
		this.toutesLesPolices.add(p2);
		this.toutesLesPolices.add(p3);
		Sinistre s1 = new Sinistre();
		Sinistre s2 = new Sinistre();
		Sinistre s3 = new Sinistre();
		this.tousLesSinistres.add(s1);
		this.tousLesSinistres.add(s2);
		this.tousLesSinistres.add(s3);
        final int annee1 = 2010;  final int moitieMois = 15;
		final int trente = 30;  final int janvier = 0;
		final int vingt = 20;  final int vingtcinq = 25;
		final int cinq = 5;
		Calendar calendar1 = Calendar.getInstance();
		calendar1.set(annee1, janvier, 1);
		Date date1 = calendar1.getTime();
		Calendar calendar2 = Calendar.getInstance();
		calendar2.set(annee1, janvier, trente);
		Date date2 = calendar2.getTime();
		Calendar calendar3 = Calendar.getInstance();
		calendar3.set(annee1, janvier, cinq);
		Date date3 = calendar3.getTime();
		Calendar calendar4 = Calendar.getInstance();
		calendar4.set(annee1, janvier, moitieMois);
		Date date4 = calendar4.getTime();
		Calendar calendar5 = Calendar.getInstance();
		calendar5.set(annee1, janvier, moitieMois);
		Date date5 = calendar5.getTime();
		Calendar calendar6 = Calendar.getInstance();
		calendar6.set(annee1, janvier, vingt);
		Date date6 = calendar6.getTime();
		Calendar calendar7 = Calendar.getInstance();
		calendar7.set(annee1, janvier, vingtcinq);
		Date date7 = calendar7.getTime();
		Calendar calendar8 = Calendar.getInstance();
		calendar8.set(annee1, janvier, trente);
		Date date8 = calendar8.getTime();
		a1.setRaisonSociale("Assurance1");
		a1.setAdresse("1, rue du Vent, 1207 Genève");
		a1.setResponsable("M. Jean");
		a1.setTelephone("022 635 78 96");
		a1.setEmail("assureur@assureur.com");
		a1.getListePolices().add(p1);
		a1.getListePolices().add(p2);
		a1.getListePolices().add(p3);
		a1.setNumeroUtilisateur(1);
		a2.setRaisonSociale("Assurance2");
		s1.setNumeroSinistre("s1");
		s1.setPrenom("Alice");
		s1.setNom("Flanders");
		s1.setDateDebut(date3);
		s1.setDateFin(date4);
		final double quarantecinq = 45;
		s1.setIndemnite(quarantecinq);
		s1.setPolice(p1);
		s2.setNumeroSinistre("s2");
		s2.setPrenom("Martin");
		s2.setNom("Caranzo");
		s2.setDateDebut(date5);
		s2.setDateFin(date6);
		final double cinquante = 50;
		s2.setIndemnite(cinquante);
		s2.setPolice(p2);
		s3.setNumeroSinistre("s3");
		s3.setPrenom("Gabrielle");
		s3.setNom("Angels");
		s3.setDateDebut(date7);
		s3.setDateFin(date8);
		final double quinze = 15;
		s3.setIndemnite(quinze);
		s3.setPolice(p1);
		p1.setNumeroPolice("p1");
		p1.setDateDebut(date1);
		p1.setDateFin(date2);
		final double troiscent = 300;
		p1.setPrime(troiscent);
		p1.getListeSinistres().add(s1);
		p1.getListeSinistres().add(s3);
		p1.setClient(c1);
		p1.setAssureur(a1);
		p2.setNumeroPolice("p2");
		final double deuxcentcinquante = 250;
		p2.setPrime(deuxcentcinquante);
		p2.getListeSinistres().add(s2);
		p2.setClient(c1);
		p2.setAssureur(a1);
		p3.setNumeroPolice("p3");
		final double centquatrevingt = 180;
		p3.setPrime(centquatrevingt);
		p3.setClient(c2);
		p3.setAssureur(a1);
		c1.setRaisonSociale("Société1");
		c1.setDomaineActivite("Commerce");
		c1.setAdresse("1, Rue1, 1201 Genève");
		c1.setResponsable("M. Dupont");
		c1.setTelephone("022 736 03 51");
		c1.setEmail("societe1@societe1.com");
		c1.getListePolices().add(p1);
		c1.getListePolices().add(p2);
		c1.setNumeroUtilisateur(1);
		c2.setRaisonSociale("Société2");
		c2.setDomaineActivite("Pulicité");
		c2.setAdresse("2, Rue2, 1202 Genève");
		c2.setResponsable("Mme. Florent");
		c2.setTelephone("022 736 03 52");
		c2.setEmail("societe2@societe2.com");
		c2.getListePolices().add(p3);
		c3.setRaisonSociale("Société3");
		c3.setDomaineActivite("Transport");
		c3.setAdresse("3, Rue3, 1203 Genève");
		c3.setResponsable("Mme. Caras");
		c3.setTelephone("022 736 03 53");
		c3.setEmail("societe3@societe3.com");
		c4.setRaisonSociale("Société4");
		c4.setResponsable("M. Fabien");
	}
	/** * @return tous les clients enregistres. */
	public List<Client> getTousLesClients() {
		return this.tousLesClients;
	}
	/** * @return tous les assureurs enregistres. */
	public List<Assureur> getTousLesAssureurs() {
		return this.tousLesAssureurs;
	}
	/** * @return toutes les polices enregistr�es. */
	public List<Police> getToutesLesPolices()  {
		return this.toutesLesPolices;
	}
	/** * @return tous les sinistres enregistres */
	public List<Sinistre> getTousLesSinistres()  {
		return this.tousLesSinistres;
	}
	/** * @param client
	 *    ajouter un client.*/
	public void ajouter(Client client) {
		this.tousLesClients.add(client);
	}
	/** * @param assureur
	 *    ajouter un assureur.*/
	public void ajouter(Assureur assureur) {
		this.tousLesAssureurs.add(assureur);
	}
	/** * @param police
	 *    ajouter une police.*/
	public void ajouter(Police police)  {
		this.toutesLesPolices.add(police);
	}
	/** * @param sinistre
	 *    ajouter un sinistre.*/
	public void ajouter(Sinistre sinistre) {
		this.tousLesSinistres.add(sinistre);

	}
	/** * @param client
	 *    supprimer un client.*/
	public void supprimer(Client client) {
		this.tousLesClients.remove(client);
	}
	/** * @param assureur
	 *    supprimer un assureur.*/
	public void supprimer(Assureur assureur) {
		this.tousLesAssureurs.remove(assureur);
	}
	/** * @param police
	 *    supprimer une police.*/
	public void supprimer(Police police) {
		this.toutesLesPolices.remove(police);
	}
	/** * @param sinistre
	 *    supprimer un sinistre.*/
	public void supprimer(Sinistre sinistre) {
		this.tousLesSinistres.remove(sinistre);
	}
	/** * @param numeroUtilisateur
	 *    le numero d'utilisateur.
	 * @return le client qui a le num�ro d'utilisateur demand�. */
	public Client clientUtilisateur(int numeroUtilisateur) {
		for (int i = 0; i < this.tousLesClients.size(); i++) {
			Client c = this.getTousLesClients().get(i);
			if (c.getNumeroUtilisateur() == numeroUtilisateur) {
				this.clientUtilisateur = c;
			}
		}
		return this.clientUtilisateur;
	}
	/** * @param numeroUtilisateur
	 *    le numero d'utilisateur.
	 * @return l'assureur qui a le num�ro d'utilisateur demand�. */
	public Assureur assureurUtilisateur(int numeroUtilisateur) {
		for (int i = 0; i < this.tousLesAssureurs.size(); i++) {
			Assureur a = this.getTousLesAssureurs().get(i);
			if (a.getNumeroUtilisateur() == numeroUtilisateur) {
				this.assureurUtilisateur = a;
			}
		}
		return this.assureurUtilisateur;

	}
	public List<Police> getPolicesDuClient(){
		 //TODO Auto-generated method stub
		return null;
	}
	public void modifier(Client client) {
		// TODO Auto-generated method stub
	}
	public void setPolicesDuClient(Client client) {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Client> getClientsTrouves() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void setClientNouvelleRaisonSociale(
			String clientNouvelleRaisonSociale) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setClientNouveauDomaineActivite(
			String clientNouveauDomaineActivite) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setClientNouveauResponsable(String clientNouveauResponsable) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setClientNouvelleAdresse(String clientNouvelleAdresse) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setClientNouveauTelephone(String clientNouveauTelephone) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setClientNouvelEmail(String clientNouvelEmail) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setAssureurNouvelleRaisonSociale(
			String assureurNouvelleRaisonSociale) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setAssureurNouvelleAdresse(String assureurNouvelleAdresse) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void setAssureurNouveauResponsable(String assureurNouveauResponsable) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setAssureurNouveauTelephone(String mAssureurNouveauTelephone) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void modifier(Assureur assureur) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setAssureurNouvelEmail(String mAssureurNouvelEmail) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setPolicesAssureur(Assureur assureur) {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Police> getPolicesAssureur() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void setPoliceNouveauNumero(String polieNouveauNumero) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setPoliceNouvelleDateDebut(Date policeNouvelleDateDebut) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setPoliceNouvelleDateFin(Date policeNouvelleDateFin) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setNouvellePrime(double nouvellePrime) {
		// TODO Auto-generated method stub
	}
	@Override
	public void modifier(Police police) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setSinistreNouveauNumero(String sinistreNouveauNumero) {
		// TODO Auto-generated method stub
		
	}
	@Override
	public void setSinistreNouvelleDateDebut(Date sinistreNouvelleDateDebut) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setSinistreNouvelleDateFin(Date sinistreNouvelleDateFin) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setNouvelleIndemnite(double nouvelleIndemnite) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setNouveauNom(String nouveauNom) {
		// TODO Auto-generated method stub
	}
	@Override
	public void setNouveauPrenom(String nouveauPrenom) {
		// TODO Auto-generated method stub
	}
	@Override
	public void modifier(Sinistre sinistre) {
		// TODO Auto-generated method stub
	}
	@Override
	public void annuleRechercheClient() {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Assureur> getAssureursTrouves() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void annuleRechercheAssureur() {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Police> getPolicesTrouvees() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void annuleRecherchePolice() {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Sinistre> getSinistresTrouves() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void annuleRechercheSinistre() {
		// TODO Auto-generated method stub
	}

	@Override
	public List<Sinistre> getSinistresPolice(Police police) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public List<Police> getPolicesDuClientId() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void annuleRecherchePolicesClientId() {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Sinistre> getSinistresPolice() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void setSinistresPolice(Police police) {
		// TODO Auto-generated method stub
	}
	@Override
	public List<Police> getPolicesAssureurId() {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void annuleRecherchePolicesAssureurId() {
		// TODO Auto-generated method stub
	}
}
